package cn.agiledata.bank.transaction.dao;

import java.util.List;

import cn.agiledata.bank.hibernateBean.Account;
import cn.agiledata.bank.transaction.logic.BatchTransSummary;
import cn.agiledata.bank.transaction.logic.EsPrePayTransBean;

import com.vnv.infrastructure.util.PagingResult;

public interface BatchTransSummaryDao {

    /**
     * 根据查询条件分页查询批量支付交易摘要，不计已被取消的交易
     * 
     * @param bean
     *            查询条件
     * @param pageNo
     *            页码
     * @param pageSize
     *            每页记录数
     * @return 分页查询结果
     */
    public PagingResult getBatchTransSummaryListWithoutCancel(
            EsPrePayTransBean bean, int pageNo, int pageSize);

    /**
     * 查询指定批次号列表中所有批次号交易的合计数据
     * 
     * @param batchNoList
     *            批次号列表
     * @return 批量交易合计数据列表（不包含其它数据）
     */
    public BatchTransSummary[] getBatchTransSummaryTotalList(List batchNoList);

    /**
     * 按交易状态分组查询指定批次号的批量支付交易摘要列表
     * 
     * @param batchNo
     *            批次号
     * @return 批量支付交易摘要列表
     */
    public BatchTransSummary[] getBatchTransSummaryListGroupByTransStatus(
            String batchNo);

    /**
     * 获取指定批次号和交易状态的批量支付交易摘要
     * 
     * @param batchNo
     *            批次号
     * @param transStatus
     *            交易状态
     * @return 批量支付交易摘要
     */
    public BatchTransSummary getBatchTransSummaryByTransStatus(String batchNo,
            String transStatus);

    /**
     * 查询指定批次号的批量交易摘要合计
     * 
     * @param batchNo
     *            批次号
     * @return 批量交易摘要合计
     */
    public BatchTransSummary getBatchTransSummaryTotal(String batchNo);

    /**
     * 获取指定付款方的指定交易状态的只包含批次号的批量交易摘要列表
     * 
     * @param debit
     *            付款方账户
     * @param transStatus
     *            交易状态
     * @return 只包含批次号的批量交易摘要列表
     */
    public BatchTransSummary[] getBatchTransSummaryListOnlyBatchNo(
            Account debit, String transStatus);
    
    /**
     * 根据查询条件分页查询批量审核交易摘要，不计已被取消的交易
     * 
     * @param bean
     *            查询条件
     * @param pageNo
     *            页码
     * @param pageSize
     *            每页记录数
     * @return 分页查询结果
     */
    public PagingResult getBatchAuditingTransSummaryList(
            EsPrePayTransBean bean, int pageNo, int pageSize);

    /**根据查询条件分页查询批量审核失败交易摘要，不计已被取消的交易
     * 
     * @param bean
     * @param pageNo
     * @param pageSize
     * @return
     */
    public PagingResult getBatchAuditeRejectTransSummaryList(EsPrePayTransBean bean, int pageNo, int pageSize);
}